home *** CD-ROM | disk | FTP | other *** search
-
- #include "includes/Project.h"
- #include "includes/Window.h"
-
- ModuleInfo module_info =
- {
- 1,
- "rndpic.module",
- "rndpic.catalog",
- MODULEF_CALL_STARTUP|MODULEF_STARTUP_SYNC|MODULEF_HELP_AVAILABLE,
- 2,
- { 0, COMMAND_0, MSG_RNDPIC_DESC, NULL, NULL }
- };
-
- ModuleFunction module_func[1] =
- { { 1, COMMAND_1, MSG_CHANGE_DESC, NULL, NULL } };
-
- /********************************************************************/
-
- extern BOOL ReadConfig( PrefsData *pd, BOOL test );
- extern BOOL WriteConfig( PrefsData *pd, BOOL test );
-
- void ChooseFiles( IPCData *ipc, char *args );
- void __saveds SendMsgs( void );
-
- void Prefs( IPCData *ipc, struct Screen *screen, IPCData *main_ipc );
- BOOL HandleWin( RPData *rp );
-
- void DisEnable( ObjectList *olist, ULONG id );
-
- void SendRMsg( STRPTR cmd, struct MsgPort *receiver );
- struct MsgPort *CheckPort( void );
-
- /********************************************************************/
-
- static char version[] = "$VER: " VERSION_STRING " " __AMIGADATE__;
-
- char type[3][8] = { {"Desktop"}, {"Lister"}, {"Req"} };
- char precision[5][6] = { {"None"}, {"GUI"}, {"Icon"}, {"Image"}, {"Exact"} };
- STRPTR guide = "RndPic.guide";
-
- /********************************************************************/
-
- int __asm __saveds L_Module_Entry( register __a0 char *args,
- register __a1 struct Screen *screen,
- register __a2 IPCData *ipc,
- register __a3 IPCData *main_ipc,
- register __d0 ULONG mod_id,
- register __d1 EXT_FUNC(func_callback) )
- {
- switch( mod_id )
- {
- case 0: Prefs( ipc, screen, main_ipc );
- break;
-
- case 1: ChooseFiles( ipc, args );
- break;
-
- case FUNCID_STARTUP: ChooseFiles( ipc, NULL );
-
- }
-
- return 1;
- }
-
- /********************************************************************/
-
- void Prefs( IPCData *ipc, struct Screen *screen, IPCData *main_ipc )
- {
- RPData *rp;
-
- NewConfigWindow ncfgwin;
-
- // Only startable, if nothing else is working ...
-
- if( ((struct Library *) getreg(REG_A6))->lib_OpenCnt < 2 )
- {
- if( (rp = AllocMemH(mempool, sizeof(RPData))) )
- {
- rp->dc.dc_Count = DOPUS_HOOK_COUNT;
- IPC_Command( main_ipc, HOOKCMD_GET_CALLBACKS, NULL, &rp->dc, NULL, REPLY_NO_PORT );
-
- ncfgwin.nw_Parent = screen;
- ncfgwin.nw_Title = VERSION_STRING;
- ncfgwin.nw_Dims = &cfgwin;
- ncfgwin.nw_Locale = locale;
- ncfgwin.nw_Port = NULL;
- ncfgwin.nw_Flags = WINDOW_SCREEN_PARENT | WINDOW_VISITOR |
- WINDOW_REQ_FILL | WINDOW_AUTO_KEYS;
- ncfgwin.nw_Font = NULL;
-
- rp->prefswin = OpenConfigWindow(&ncfgwin);
- rp->ipc = ipc;
- rp->pd.db.middledelay = 200;
- rp->pd.db.startdelay = 180;
-
- rp->olist = AddObjectList( rp->prefswin, winobjects );
-
- ReadConfig( &rp->pd, FALSE );
-
- for( rp->running = 0; rp->running < 3; rp->running++ )
- {
- SetGadgetValue( rp->olist, (rp->running * 4) + GADGET_ID_STRING_DESKTOP, (ULONG) rp->pd.rpd[rp->running].path );
-
- if( rp->pd.rpd[rp->running].flags & RANDOM_ENABLED )
- SetGadgetValue( rp->olist, (rp->running * 4) + GADGET_ID_TXT_DESKTOP, TRUE );
- else
- DisEnable( rp->olist, (rp->running * 4) + GADGET_ID_TXT_DESKTOP );
- }
-
- if( rp->pd.rpd[3].flags )
- {
- rp->modelist = AddObjectList( rp->prefswin, delay_objects );
- SetGadgetValue( rp->olist, GADGET_ID_BUTTON_DELAY, TRUE );
- SetGadgetValue( rp->olist, GADGET_ID_BUTTON_COPIED, FALSE );
- SetGadgetValue( rp->olist, GADGET_ID_SLIDER_DELAY, rp->pd.db.startdelay );
- DisableObject( rp->olist, GADGET_ID_BUTTON_TEST, FALSE );
- DisableObject( rp->olist, GADGET_ID_POP_DESKTOP, FALSE );
-
- }
- else
- {
- rp->modelist = AddObjectList( rp->prefswin, copy_objects );
- SetGadgetValue( rp->olist, GADGET_ID_BUTTON_DELAY , FALSE );
- SetGadgetValue( rp->olist, GADGET_ID_BUTTON_COPIED, TRUE );
-
- SetGadgetValue( rp->olist, GADGET_ID_STRING_COPIED, (ULONG) rp->pd.rpd[3].path );
- DisableObject( rp->olist, GADGET_ID_BUTTON_TEST , TRUE );
- DisableObject( rp->olist, GADGET_ID_POP_DESKTOP , TRUE );
- DisableObject( rp->olist, GADGET_ID_POP_LISTER , TRUE );
- DisableObject( rp->olist, GADGET_ID_POP_REQUESTER, TRUE );
- }
-
- rp->gads[0] = GADGET( GetObject(rp->olist, GADGET_ID_POP_DESKTOP));
-
- // preparing popups...
-
- NewList( (struct List *) &rp->popmenu.item_list );
- rp->popmenu.locale = locale;
- rp->popmenu.flags = 0;
-
- for( rp->running = MSG_POPUP;
- rp->running < MSG_POPUP + 8;
- rp->running++ )
- {
- if( (rp->popitem = AllocMemH(mempool, sizeof(PopUpItem))) )
- {
- if( rp->running != MSG_POPUP + 2 )
- {
- rp->popitem->item_name = (char *) rp->running;
- }
- else
- rp->popitem->item_name = POPUP_BARLABEL;
-
- rp->popitem->id = rp->running - MSG_POPUP;
- AddTail( (struct List *) &rp->popmenu.item_list, (struct Node *) &rp->popitem->node );
- }
- }
-
- rp->popitem->flags |= POPUPF_CHECKED;
-
- while( WaitPort(rp->prefswin->UserPort) && HandleWin(rp) );
-
- while( !IsListEmpty((struct List *) &rp->popmenu.item_list) )
- FreeMemH( RemTail((struct List *) &rp->popmenu.item_list) );
-
- CloseConfigWindow( rp->prefswin );
- FreeMemH( rp );
- }
- }
- }
-
- /********************************************************************/
-
- BOOL HandleWin( RPData *rp )
- {
- rp->running = TRUE;
-
- while( (rp->imsg = GetWindowMsg(rp->prefswin->UserPort)) && rp->running )
- {
- switch( rp->imsg->Class )
- {
- case IDCMP_CLOSEWINDOW:
-
- rp->running = FALSE;
- break;
-
- case IDCMP_GADGETDOWN:
-
- for( rp->misc = 0; rp->misc < 8; rp->misc++ )
- {
- if( rp->misc != 2 )
- {
- (rp->popitem = GetPopUpItem(&rp->popmenu, rp->misc))->flags = POPUPF_LOCALE|POPUPF_CHECKIT;
-
- if( rp->pd.rpd[(GET_ID(rp->imsg)-GADGET_ID_POP_DESKTOP)/4].flags & 1 << rp->misc )
- GetPopUpItem( &rp->popmenu, rp->misc )->flags |= POPUPF_CHECKED;
- }
- }
-
- if( DoPopUpMenu(rp->prefswin, &rp->popmenu, &rp->popitem, SELECTDOWN) != -1 )
- {
- if( rp->popitem->id < 2 )
- {
- if( (rp->pd.rpd[(GET_ID(rp->imsg)-GADGET_ID_POP_DESKTOP)/4].flags ^= 1 << (rp->popitem->id)) & 1 << rp->popitem->id &&
- (rp->pd.rpd[(GET_ID(rp->imsg)-GADGET_ID_POP_DESKTOP)/4].flags & 1 << (!rp->popitem->id)) )
- rp->pd.rpd[(GET_ID(rp->imsg)-GADGET_ID_POP_DESKTOP)/4].flags ^= 1 << (!rp->popitem->id);
- }
-
- else
- {
- for( rp->misc = 3; rp->misc < 8; rp->misc++ )
- {
- if( rp->popitem->id == rp->misc )
- rp->pd.rpd[(GET_ID(rp->imsg)-GADGET_ID_POP_DESKTOP)/4].flags |= 1 << rp->misc;
- else
- {
- if( rp->pd.rpd[(GET_ID(rp->imsg)-GADGET_ID_POP_DESKTOP)/4].flags & 1 << rp->misc )
- rp->pd.rpd[(GET_ID(rp->imsg)-GADGET_ID_POP_DESKTOP)/4].flags ^= 1 << rp->misc;
- }
- }
- }
- }
-
- // switch the button again off
- GADGET((rp->cur = GetObject(rp->olist, GET_ID(rp->imsg))))->Flags &= ~GFLG_SELECTED;
- RefreshGList( GADGET(rp->cur), rp->prefswin, 0, 1 );
- break;
-
- case IDCMP_MOUSEMOVE:
-
- if( GET_ID(rp->imsg) == GADGET_ID_SLIDER_DELAY )
- {
- if( GetGadgetValue(rp->olist, GADGET_ID_CYCLE_DELAY) )
- rp->pd.db.middledelay = rp->imsg->Code;
- else
- rp->pd.db.startdelay = rp->imsg->Code;
- }
- break;
-
- case IDCMP_RAWKEY:
-
- if( rp->imsg->Code = 0x5F )
- {
- rp->misc = GADGET_ID_TXT_DESKTOP;
- rp->cur = 0;
-
- for( rp->misc = GADGET_ID_TXT_DESKTOP;
- rp->misc <= GADGET_ID_BUTTON_CANCEL;
- rp->misc++ )
- {
- if( (rp->cur = GetObject(rp->olist, rp->misc)) &&
- rp->cur->type == OD_GADGET &&
- CheckObjectArea(rp->cur, rp->imsg->MouseX, rp->imsg->MouseY) )
- {
- sprintf( rp->buffer, "%ld", rp->misc );
- rp->dc.dc_ShowHelp( guide, rp->buffer );
-
- }
- }
- }
- break;
-
- case IDCMP_GADGETUP:
-
- switch( GET_ID(rp->imsg) )
- {
- case GADGET_ID_TXT_DESKTOP:
-
- rp->pd.rpd[0].flags ^= RANDOM_ENABLED;
- DisEnable( rp->olist, GADGET_ID_TXT_DESKTOP );
- break;
-
- case GADGET_ID_TXT_LISTER:
-
- DisEnable( rp->olist, GADGET_ID_TXT_LISTER );
- rp->pd.rpd[1].flags ^= RANDOM_ENABLED;
- break;
-
- case GADGET_ID_STRING_LISTER: break;
-
- case GADGET_ID_TXT_REQUESTER:
-
- DisEnable( rp->olist, GADGET_ID_TXT_REQUESTER );
- rp->pd.rpd[2].flags ^= RANDOM_ENABLED;
- break;
-
- case GADGET_ID_STRING_REQUESTER: break;
-
- case GADGET_ID_BUTTON_COPIED:
-
- if( GetGadgetValue(rp->olist, GADGET_ID_BUTTON_DELAY) )
- {
- SetGadgetValue( rp->olist, GADGET_ID_BUTTON_DELAY, FALSE );
- FreeObjectList( rp->modelist );
- DisplayObject( rp->prefswin, GetObject(rp->olist, GADGET_ID_BEVEL_MODESETTINGS), -1, -1, NULL );
- rp->modelist = AddObjectList( rp->prefswin, copy_objects );
- DisableObject( rp->olist, GADGET_ID_POP_DESKTOP, TRUE );
- DisableObject( rp->olist, GADGET_ID_POP_LISTER, TRUE );
- DisableObject( rp->olist, GADGET_ID_POP_REQUESTER, TRUE );
-
- DisableObject( rp->olist, GADGET_ID_BUTTON_TEST, TRUE );
-
- SetGadgetValue( rp->olist, GADGET_ID_STRING_COPIED, (ULONG) rp->pd.rpd[3].path );
-
- }
- else
- SetGadgetValue( rp->olist, GADGET_ID_BUTTON_COPIED, TRUE );
-
- break;
-
- case GADGET_ID_BUTTON_DELAY:
-
- if( GetGadgetValue(rp->olist, GADGET_ID_BUTTON_COPIED) )
- {
- SetGadgetValue( rp->olist, GADGET_ID_BUTTON_COPIED, FALSE );
- FreeObjectList( rp->modelist );
- DisplayObject( rp->prefswin, GetObject(rp->olist, GADGET_ID_BEVEL_MODESETTINGS), -1, -1, NULL );
- rp->modelist = AddObjectList( rp->prefswin, delay_objects );
-
- if( rp->pd.rpd[3].flags & CYCLE_MIDDLE )
- {
- SetGadgetValue( rp->olist, GADGET_ID_CYCLE_DELAY, 1 );
- SetGadgetValue( rp->olist, GADGET_ID_SLIDER_DELAY, rp->pd.db.middledelay );
- }
- else
- {
- SetGadgetValue( rp->olist, GADGET_ID_SLIDER_DELAY, rp->pd.db.startdelay );
- }
-
- DisableObject( rp->olist, GADGET_ID_POP_DESKTOP, FALSE|!GetGadgetValue(rp->olist, GADGET_ID_TXT_DESKTOP) );
- DisableObject( rp->olist, GADGET_ID_POP_LISTER, FALSE|!GetGadgetValue(rp->olist, GADGET_ID_TXT_LISTER) );
- DisableObject( rp->olist, GADGET_ID_POP_REQUESTER, FALSE|!GetGadgetValue(rp->olist, GADGET_ID_TXT_REQUESTER) );
-
- DisableObject( rp->olist, GADGET_ID_BUTTON_TEST, FALSE );
-
- }
- else
- SetGadgetValue( rp->olist, GADGET_ID_BUTTON_DELAY, TRUE );
- break;
-
- case GADGET_ID_CYCLE_DELAY:
-
- rp->pd.rpd[3].flags ^= CYCLE_MIDDLE;
-
- if( GetGadgetValue(rp->olist, GADGET_ID_CYCLE_DELAY) )
- {
- SetGadgetValue( rp->olist, GADGET_ID_SLIDER_DELAY, rp->pd.db.middledelay );
- }
- else
- {
- SetGadgetValue( rp->olist, GADGET_ID_SLIDER_DELAY, rp->pd.db.startdelay );
- }
-
- break;
-
-
- case GADGET_ID_STRING_COPIED:
-
- strcpy( rp->pd.rpd[3].path, (STRPTR) GetGadgetValue(rp->olist, GADGET_ID_STRING_COPIED) );
-
- break;
-
- case GADGET_ID_BUTTON_TEST:
-
- SetBusyPointer( rp->prefswin );
- strcpy( rp->pd.rpd[0].path, (STRPTR) GetGadgetValue(rp->olist, GADGET_ID_STRING_DESKTOP) );
- strcpy( rp->pd.rpd[1].path, (STRPTR) GetGadgetValue(rp->olist, GADGET_ID_STRING_LISTER) );
- strcpy( rp->pd.rpd[2].path, (STRPTR) GetGadgetValue(rp->olist, GADGET_ID_STRING_REQUESTER) );
-
- rp->pd.rpd[3].flags = GetGadgetValue( rp->olist, GADGET_ID_BUTTON_DELAY );
-
- WriteConfig( &rp->pd, TRUE );
-
- if( (rp->misc = (ULONG) CheckPort()) )
- SendRMsg( "Command wait RndPic hhh", (struct MsgPort *) rp->misc );
-
- DeleteFile( TEST_CONFIG );
- ClearPointer( rp->prefswin );
- break;
-
- case GADGET_ID_BUTTON_SAVE:
-
- strcpy( rp->pd.rpd[0].path, (STRPTR) GetGadgetValue(rp->olist, GADGET_ID_STRING_DESKTOP) );
- strcpy( rp->pd.rpd[1].path, (STRPTR) GetGadgetValue(rp->olist, GADGET_ID_STRING_LISTER) );
- strcpy( rp->pd.rpd[2].path, (STRPTR) GetGadgetValue(rp->olist, GADGET_ID_STRING_REQUESTER) );
-
- rp->pd.rpd[3].flags = GetGadgetValue( rp->olist, GADGET_ID_BUTTON_DELAY );
-
- WriteConfig( &rp->pd, FALSE );
-
- case GADGET_ID_BUTTON_CANCEL:
-
- rp->running = FALSE;
- break;
- }
- }
- ReplyWindowMsg( rp->imsg );
- }
- return (BOOL) rp->running;
- }
-
- /********************************************************************/
- // the "working" process
-
- void ChooseFiles( IPCData *ipc, char *args )
- {
- RndData *rd;
- PassData *pd = NULL;
-
- if( (rd = AllocMemH(mempool, sizeof(RndData))) )
- {
- rd->pd.db.startdelay = 180;
- rd->pd.db.middledelay = 200;
-
- if( ReadConfig(&rd->pd, (args && args[0])) &&
- ((rd->pd.rpd[0].flags | rd->pd.rpd[1].flags | rd->pd.rpd[2].flags) & RANDOM_ENABLED) )
- {
- if( rd->pd.rpd[3].flags )
- {
- if( !(pd = AllocMemH(mempool, sizeof(PassData))) )
- {
- FreeMemH( rd );
- return;
- }
- else
- {
- pd->a4 = getreg(REG_A4);
- pd->library = DOpusBase;
- pd->module = (struct Library *) getreg(REG_A6);
- }
- }
-
- if( (rd->eac = AllocDosObject(DOS_EXALLCONTROL,NULL)) )
- {
- if( (rd->fib = AllocDosObject(DOS_FIB, NULL)) )
- {
- if( (rd->dirlist = Att_NewList( LISTF_POOL)) )
- {
- for( rd->count = 0; rd->count < 3; rd->count++ )
- {
- if( rd->pd.rpd[rd->count].flags & RANDOM_ENABLED )
- {
- strcpy( rd->buffer, FilePart(rd->pd.rpd[rd->count].path) );
- rd->pd.rpd[rd->count].path[strlen(rd->pd.rpd[rd->count].path) - strlen(rd->buffer) - 1] = 0;
-
- if( (rd->lock = Lock( rd->pd.rpd[rd->count].path, SHARED_LOCK)) )
- {
- Examine( rd->lock, rd->fib );
-
- if( rd->fib->fib_DirEntryType > 0 )
- {
- rd->eac->eac_LastKey = 0;
- rd->more = 0;
-
- while( rd->buffer[rd->more] )
- rd->buffer[rd->more] = ToUpper( rd->buffer[rd->more++] );
-
- ParsePatternNoCase( rd->buffer, rd->puffer, 256 );
- rd->eac->eac_MatchString = rd->puffer;
-
- do
- {
- rd->ead = (APTR) rd->mem;
-
- if( (!(rd->more = ExAll(rd->lock, rd->ead, 4096, ED_TYPE, rd->eac)) &&
- IoErr() != ERROR_NO_MORE_ENTRIES) )
- break;
-
- if( !rd->eac->eac_Entries )
- continue;
-
- do
- {
- if( rd->ead->ed_Type < 0 && Stricmp(&rd->ead->ed_Name[strlen(rd->ead->ed_Name)-5], ".info") )
- {
- strcpy( rd->buffer, rd->pd.rpd[rd->count].path );
- AddPart( rd->buffer, rd->ead->ed_Name, 256 );
- Att_NewNode( rd->dirlist, rd->buffer, NULL, NULL );
- }
- }
- while( (rd->ead = rd->ead->ed_Next) );
- }
- while( rd->more );
- }
- UnLock( rd->lock );
-
- if( (rd->more = Att_NodeCount(rd->dirlist)) )
- {
- Seed( ((LONG) rd->dirlist)/(rd->mem[Random(300)]+1) );
- rd->more = Random( rd->more );
- strcpy( rd->pd.rpd[rd->count].path, Att_NodeName( rd->dirlist, rd->more) );
- }
- else
- rd->pd.rpd[rd->count].path[0] = 0;
-
- Att_RemList( rd->dirlist, REMLISTF_SAVELIST );
- }
- }
- }
-
- for( rd->count = 0; rd->count < 3; rd->count++ )
- {
- if( (rd->pd.rpd[rd->count].flags & RANDOM_ENABLED) &&
- rd->pd.rpd[rd->count].path[0] )
- {
- sprintf( rd->puffer, "Background.%ld", rd->count );
-
- if( pd )
- {
- for( rd->lock = 3; !(rd->pd.rpd[rd->count].flags & (1 << rd->lock)) && (rd->lock < 8);
- rd->lock++ );
-
- sprintf( pd->pd.rpd[rd->count].path,
- "%s %s %s %s %s%s %s",
- DOpusBase->lib_Version > 63 ? "DOpus set background" : "Command SetAsBackground",
- DOpusBase->lib_Version > 63 ? rd->pd.rpd[rd->count].path : type[rd->count],
- DOpusBase->lib_Version > 63 ? type[rd->count] : rd->pd.rpd[rd->count].path,
- DOpusBase->lib_Version > 63 ? "custom" : NULL,
- rd->lock == 8 ? NULL : "Precision=",
- rd->lock == 8 ? NULL : precision[rd->lock-3],
- (rd->pd.rpd[rd->count].flags & CENTER_PIC) ? "Center" : ((rd->pd.rpd[rd->count].flags & TILE_PIC) ? "Tile" : NULL) );
-
- }
- else
- {
- strcpy( rd->buffer, rd->pd.rpd[3].path );
- AddPart( rd->buffer, rd->puffer, 256 );
- DeleteFile( rd->buffer );
- MakeLink( rd->buffer, (LONG) rd->pd.rpd[rd->count].path, LINK_SOFT );
-
- }
- }
- }
-
- if( pd )
- {
- pd->pd.db.startdelay = rd->pd.db.startdelay;
- pd->pd.db.middledelay = rd->pd.db.middledelay;
-
- if( !args )
- pd->pd.rpd[3].flags |= STARTUP;
-
- if( !(IPC_Launch(0, &rd->sender, "RndPicSender",
- (ULONG) SendMsgs, 4000, (ULONG) pd,
- DOSBase)) )
- FreeMemH( pd );
-
- }
- Att_RemList( rd->dirlist, NULL );
- }
- FreeDosObject( DOS_FIB, rd->fib );
- }
- FreeDosObject( DOS_EXALLCONTROL, rd->eac );
- }
- }
- FreeMemH( rd );
- }
- }
-
- /********************************************************************/
- // the commanding process (the callbacks did not work here..., ask me
- not for the reason.)
-
- ULONG __asm __saveds send_startup( register __a0 IPCData *ipc,
- register __a1 PassData *pd )
- {
- struct Library *DOpusBase;
-
- putreg( REG_A4,pd->a4 );
- pd->ipc = ipc;
- DOpusBase = pd->library;
-
- ++pd->module->lib_OpenCnt;
-
- return 1;
- }
-
- void __saveds SendMsgs( void )
- {
- IPCData *ipc;
- struct Library *DOpusBase;
- PassData *pd;
-
- if (!(DOpusBase=(struct Library *)FindName(&((struct ExecBase *)*((ULONG *)4))->LibList,"dopus5.library")))
- return;
-
- ipc = IPC_ProcStartup( (ULONG *) &pd, send_startup);
-
- putreg( REG_A4, pd->a4 );
-
- if( !ipc )
- {
- IPC_Free( pd->ipc );
- FreeMemH( pd );
- return;
- }
-
- if( (pd->source = CreateMsgPort()) )
- {
- if( (pd->rmsg = CreateRexxMsg(pd->source, NULL, NULL)) )
- {
- pd->rmsg->rm_Action = 0;
-
- if( pd->pd.rpd[3].flags & STARTUP )
- {
- while( !(pd->receiver = CheckPort()) )
- Delay( 50 );
-
- if( DOpusBase->lib_Version > 63 )
- Delay(200);
- Delay( pd->pd.db.startdelay );
- }
- else
- pd->receiver = CheckPort();
-
- for( pd->pd.db.startdelay = 0; pd->pd.db.startdelay < 3; pd->pd.db.startdelay++ )
- {
- ARG0(pd->rmsg) = pd->pd.rpd[pd->pd.db.startdelay].path;
- FillRexxMsg( pd->rmsg, 1, 0 );
- PutMsg( pd->receiver, (struct Message *) pd->rmsg );
-
- WaitPort( pd->source );
- GetMsg( pd->source );
-
- ClearRexxMsg( pd->rmsg, 1 );
- if( DOpusBase->lib_Version < 64 )
- Delay( pd->pd.db.middledelay );
- else
- Delay( 50 );
-
-
- }
- if( DOpusBase->lib_Version > 63 )
- {
- ARG0(pd->rmsg) = "dopus refresh background custom";
- FillRexxMsg( pd->rmsg, 1, 0 );
- PutMsg( pd->receiver, (struct Message *) pd->rmsg );
-
- WaitPort( pd->source );
- GetMsg( pd->source );
-
- ClearRexxMsg( pd->rmsg, 1 );
- }
-
-
- DeleteRexxMsg( pd->rmsg );
- }
- DeleteMsgPort( pd->source );
- }
- --pd->module->lib_OpenCnt;
- IPC_Free( pd->ipc );
- FreeMemH( pd );
-
-
- }
-
- /********************************************************************/
-
-
- void DisEnable( ObjectList *olist, ULONG id )
- {
- BOOL state = (BOOL) GetGadgetValue( olist, id );
- DisableObject( olist, id+1, !state );
- DisableObject( olist, id+2, !state );
- DisableObject( olist, id+3, (!state)|GetGadgetValue(olist, GADGET_ID_BUTTON_COPIED) );
- }
-
- /********************************************************************/
-
- void SendRMsg( STRPTR cmd, struct MsgPort *receiver )
- {
- struct MsgPort *source;
- struct RexxMsg *rmsg;
-
- if( (source = CreateMsgPort()) )
- {
- if( (rmsg = CreateRexxMsg(source, NULL, NULL)) )
- {
-
- rmsg->rm_Action = 0;
- ARG0(rmsg) = cmd;
- FillRexxMsg( rmsg, 1, 0 );
- PutMsg( receiver, (struct Message *) rmsg );
-
- WaitPort( source );
- GetMsg( source );
-
- ClearRexxMsg( rmsg, 1 );
-
- DeleteRexxMsg( rmsg );
- }
- DeleteMsgPort( source );
- }
-
- }
-
- /********************************************************************/
-
- struct MsgPort *CheckPort( void )
- {
- struct MsgPort *ret;
- Forbid();
-
- ret = FindPort( "DOPUS.1" );
-
- Permit();
-
- return ret;
- }
-
- /********************************************************************/
-
- // function to set the values for the slider in 10 steps
-
- LONG ChangeValue( struct Gadget *gad, LONG value )
- {
- return( (value = value/10) * 10 );
- }
-
-
-